home *** CD-ROM | disk | FTP | other *** search
/ MacHack 2000 / MacHack 2000.toast / pc / The Hacks / Softshoe / Lisa's Portable Parts / BitArray / BitArrayBase.h < prev    next >
Encoding:
Text File  |  2000-06-23  |  1.3 KB  |  56 lines

  1. // BitArrayBase.h
  2.  
  3. #ifndef BitArrayBase_h
  4. #define BitArrayBase_h
  5.  
  6. #ifndef BitReference_h
  7. #include "BitReference.h"
  8. #endif
  9.  
  10. class BitArrayBase
  11.   {
  12.     public:
  13.         typedef uint32 Unit;
  14.         enum { unitLength = 32 };
  15.         
  16.     private:
  17.         Unit *const bits;
  18.         const uint32 length;
  19.         const uint32 units;
  20.         const Unit *const end;
  21.         const Unit lastUnitMask;
  22.         
  23.     public:
  24.         BitArrayBase( Unit *theBits, uint32 theLength );
  25.         BitArrayBase( Unit *theBits, uint32 theLength, bool initialValue );
  26.         
  27.         uint32 Length() const    { return length; }
  28.         
  29.         bool operator[]( uint32 i ) const;
  30.         BitReference operator[]( uint32 i );
  31.         
  32.         void SetAll();
  33.         void ClearAll();
  34.         void ChangeAll();
  35.         void SetAll( bool b );
  36.         
  37.         bool operator==( const BitArrayBase& ) const;
  38.         bool operator!=( const BitArrayBase& r ) const        { return !(*this == r); }
  39.         
  40.         void operator=( const BitArrayBase& );
  41.         void operator&=( const BitArrayBase& );
  42.         void operator|=( const BitArrayBase& );
  43.         void operator^=( const BitArrayBase& );
  44.         
  45.         uint32 FirstZero( uint32 start = 0 ) const;    // start <= result <= length
  46.         uint32 FirstOne( uint32 start = 0 ) const;
  47.  
  48.         uint32 LastZero( uint32 start ) const;            // 0 <= result < start
  49.         uint32 LastOne( uint32 start ) const;            // or result == length (not found)
  50.         
  51.         uint32 LastZero() const                { return LastZero( length ); }
  52.         uint32 LastOne() const                { return LastOne( length ); }
  53.   };
  54.  
  55. #endif
  56.